URGENT ECOLE : Insertion MySQL dans une boucle FOR (php)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : URGENT ECOLE : Insertion MySQL dans une boucle FOR (php)

par cyberappz » 02 mai 2005, 00:23

Je suis en local et j'ai installé PHP par un rpm (je suis sur Linux) qui ma mis "--disable-session" (vu sur phpinfo.php) !!! Ne sachant pas si l'option est désactivée ou pas à l'école, je ne vais pas mettre le bouton "supprimer la table". En tout cas, j'aurai beaucoup beaucoup appris en quelques heures !

Merci pour tout à tout ceux qui m'ont aidé et désolé de ne pas avoir répondu direct (j'étais fort occupé).
Bonne nuit. :roll: :lol:

par fab » 01 mai 2005, 23:59

Le support des sessions est activé par default mais il est désactivable. Peut tu nous donner un peu plus d'informations sur ta configuration ? ( exemple lateforme , version etc... )
Sinon si tu es chez un hébergeur ( lequel ? ) regarde le ./configure ( visible depuis un simple phpinfo() ) si tu trouves quelque chose du genre --disable-session

par cyberappz » 01 mai 2005, 23:24

Sinon, laisse tomb je vais ne laisser que le bouton "supprimer la base" là ya aucun pb. Merci pour tout. :lol: Je reviendrais encore lol, d'aileurs quand j'ai le temps, je m'inscris et je participerai (aide aux autres). :wink: Bonne nuit.

par cyberappz » 01 mai 2005, 23:13

Nan ca change rien. Peut-être à cause de la version PHP (4.3..4) (à partir de la 4.3.5 j'ai des erreurs sur certains sites car il devient de + en + stricte) ou un paramètre dans le php.ini (tout est d'origine sauf registry globals sur on pour certains des sites de l'intranet (malgré que c'est pas sécurisé)). Une autre idée alors? :oops:

par Cyrano » 01 mai 2005, 23:05

non, regarde dans le manuel , c'est une fontion PHP, mais si ça te génère une erreur, je comprends pas....?
C'est pas normal du tout
Jute au cas où, (en principe ça n'a pas de rapport) n'utilises pas les "short open tags" <?, mais la formule entière <?php :
<?php
session_start();
?>

par cyberappz » 01 mai 2005, 22:57

Merci mais j'ai comme erreur:

Fatal error: Call to undefined function: session_start()

Code:

Code : Tout sélectionner

<? session_start(); ?> <html> ...
session_start n'est pas une fonction interne qu'il ne la connait pas :?:

par Cyrano » 01 mai 2005, 22:49

Transmission des variables : quand tu déclares une variable dans un script, cette variable a une durée de vie égale à celle de la page, le temps qu'elle est affichée. Donc en rechargeant la page, tu perds cette variable.

C'est pour ça que pour supprimer, on utilise un formulaire pour transmettre une variable via une variable Super-Globale $_POST.

Si tu veux garder une variable tout au long de ta navigation sans utiliser de formulaire pour ça, tu dois alors utiliser une autre super-globale : $_SESSION.

Dans ce cas, tu dois commencer ton script avant tout autre chose par session_start(); rien avant, surtout pas de HTML ni même d'espace. Cette ligne doit être présente sur toutes les pages.

À partir de là, tu initialises des variables de session, par exemple, $_SESSION['table'] = "nom_de_la_table";

En rechargeant ta page, la session se poursuit grâce au session_start(); . tu peux donc récupérer le contenu de ta variable de session contenu dans $_SESSION['table']

Voilà, c'est succinct, j'espère que c'est assez clair quand même :)

par cyberappz » 01 mai 2005, 22:20

Pas d'idée? :oops:
Si je trouves pas ça, je dois supprimer toute la partie qui m'a pris du temps sur le bouton "supprimer la table" et ne laisser que "supprimer la base". :oops:

par cyberappz » 01 mai 2005, 21:58

Arf chui à deux doigts d'y arriver.
Dis, quand on déclare une variable en bas de page et qu'on rafraichit la page, l'appel à la variable en début de page marche encore? Pcq'on dirait pas.

En gros, en bas de page lorsqu'on appuye sur le bouton "suppr la table", il tente de se connecter à la base, si erreur -> $var=db_inexistante

Et en début de page je crée auto la base SAUF si $var=db_inexistante (déclaré en bas de page). Le pb c'est qu'entre, il y a un rafraichissement lors de l'appui sur le bouton... On dirait qu'il perd la valeur de $var à cause de ca. Comment faire? (Une fois ça réussi, je mange et dodoooo lol :lol:)

par Cyrano » 01 mai 2005, 21:48

Évite de mettre des "@" pour masquer des messages d'erreur : corrige les erreurs à la place, c'est plus professionnel et ça évite les surprises ultérieures. Si tu ne veux pas de message, laisse juste un "or die" et rien de plus.

Pour la création automatique, ben vois comment organiser ton script si tu ne veux pas qu'elle se recrée toute seule à chaque coup.

par Invité » 01 mai 2005, 21:42

Donc il m'affiche bien les deux messages d'erreur.

1er msg d'erreur:

Si séléction de la base impossible, echo "Base inexistante" [OK]
Sauf que en plus il faudrait cacher le msg d'erreur de mysql_connect_db qui n'a pas su se connecter (avec un @ devant c'est bien ça?)

2ème msg d'erreur:

Si la fonction retourne false, echo "Erreur d'exécution : La table n'a pu être supprimée correctement."

En fait maintenant tout va bien on dirait (je vérifie) sauf que il recréée la base juste après (car il recharge la page et à chaque chargement il crée la base si elle n'existe pas...).

par Cyrano » 01 mai 2005, 21:36

De rien, je crois que tu seras prêt pour demain ;)

par cyberappz » 01 mai 2005, 21:34

Ca ne va pas pcq le test vaut toujours vrai car la séléction de la base se fait en haut du code et la fonction (appellé quand on appuye sur un bouton) est en bas. Donc il faut revérifier dans la fonction (donc lors de l'appui) que la connexion a pu se faire à ce moment-là et si oui, on supprime la table. J'y suis presque :

Code : Tout sélectionner

function suppression_table($tablename) { $retour = false; $db_select = mysql_select_db("$dbname", $dbconnect); if($db_select) { $cmd_suppr_table = "DROP TABLE IF EXISTS `". $tablename ."`;"; $suppr_table = mysql_query($cmd_suppr_table); } else { echo "Base non-existante"; } if($suppr_table) { $retour = true; } return $retour; }
Résultat lorsqu'il n'y a plus de base et que j'appuyes sur le bouton supprimer la table :

Code : Tout sélectionner

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in fichier.php on line 187 Base non-existante Erreur d'exécution : La table n'a pu être supprimée correctement. (<-- Message si la fonction a retourné false)
Ligne 187 :

Code : Tout sélectionner

$db_select = mysql_select_db("$dbname", $dbconnect);
Mici vraiment de ton aide. :lol:

par Cyrano » 01 mai 2005, 20:55

On est drôlement embarqués dis donc : Allez, on simplifie et tu testes ça :
<?php
$dbselect= mysql_select_db("$dbname", $dbconnect);
if($dbselect)
{
    $cmd_suppr_table="DROP TABLE IF EXISTS `". $tablename ."`;";
    $suppr_table=mysql_query($cmd_suppr_table);
    $affiche_resultat = "La table ". $tablename ." a été supprimée correctement.";
}
else
{
    $affiche_resultat = "La table ". $tablename ." n'existe pas et ne peut être supprimée.";
}
echo "<p>". $affiche_resultat ."</p>\n";
?>
Tu me diras ce que tu obtiens.

par cyberappz » 01 mai 2005, 20:54

PS: As-tu, à titre d'info, une réponse au fait que PHP exécute directement ses variables contrairement à Bash (par ex. je sais c'est un language non-web mais bon)?

Exemple: $var=mysql_query($var2)
Il ne faudra pas faire echo $var; pour qu'elle soit exécuté.

Une explication? Comment faire si on voudrait par exemple qu'elle ne soit pas automatiquement exécuté?