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

cyberappz
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 18:07

Y avait une tite erreur dans ton code $retour true: (j'ai mod par return true;) et logiquement tout devrait aller mais ce n'est pas le cas (ici c'est table et base et toutes les variables sont déclarées (si pas ici, plus haut)).

Code : Tout sélectionner

function suppression_table() { $retour = false; $cmd_suppr_table="DROP TABLE `$tablename`;"; $suppr_table=mysql_query($cmd_suppr_table); if($suppr_table) { return true; } return $retour; } if(isset($_POST['supprimer_table'])) { $suppression = suppression_table(); if($suppression == true) { echo("<p>La table a été supprimée correctement</p>\n"); } else { echo("<p><span style=\"color: #ff0000; font-weight: bold\">Erreur d'exécution</span> : La table n'a pas été supprimée correctement</p>\n"); } } function suppression_base() { $retour = false; $cmd_suppr_base="DROP DATABASE `$dbname`;"; $suppr_base=mysql_query($cmd_suppr_base); if($suppr_base) { return true; } return $retour; } if(isset($_POST['supprimer_base'])) { $suppression = suppression_base(); if($suppression == true) { echo("<p>La base a été supprimée correctement</p>\n"); } else { echo("<p><span style=\"color: #ff0000; font-weight: bold\">Erreur d'exécution</span> : La base n'a pas été supprimée correctement</p>\n"); } } ?> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" > <input type="submit" name="supprimer_table" id="supprimer_table" value="Supprimer la table si existante" /> </form> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" > <input type="submit" name="supprimer_base" id="supprimer_base" value="Supprimer la base si existante" /> </form>
Merci bcp. :lol:

cyberappz
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 18:11

Avec le code ci-dessus, j'ai Erreur d'exécution et par rapport à l'autre, l'action n'est pas effectuée. :oops:

Mammouth du PHP | 19672 Messages

01 mai 2005, 18:11

Y avait une tite erreur dans ton code $retour true: (j'ai mod par return true;) ...
STOP ... j'ai édité mon message (corrigé) : il manquait un "=" : si tu modifies comme tu as fait, tu as deux retours : un TRUE et un FALSE.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

cyberappz
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 18:19

Ah ouais je vois ton erreur maintenant. Voilà la correction faite dans mon code (j'ai tjs Erreur d'exécution et l'action n'est point effectuée :() :

Code : Tout sélectionner

<?php function suppression_table() { $retour = false; $cmd_suppr_table="DROP TABLE `$tablename`;"; $suppr_table=mysql_query($cmd_suppr_table); if($suppr_table) { $retour = true; } return $retour; } if(isset($_POST['supprimer_table'])) { $suppression_table = suppression_table(); if($suppression_table == true) { echo("<p>La table a été supprimée correctement</p>\n"); } else { echo("<p><span style=\"color: #ff0000; font-weight: bold\">Erreur d'exécution</span> : La table n'a pas été supprimée correctement</p>\n"); } } function suppression_base() { $retour = false; $cmd_suppr_base="DROP DATABASE `$dbname`;"; $suppr_base=mysql_query($cmd_suppr_base); if($suppr_base) { $retour = true; } return $retour; } if(isset($_POST['supprimer_base'])) { $suppression_base = suppression_base(); if($suppression_base == true) { echo("<p>La base a été supprimée correctement</p>\n"); } else { echo("<p><span style=\"color: #ff0000; font-weight: bold\">Erreur d'exécution</span> : La base n'a pas été supprimée correctement</p>\n"); } } ?> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" > <input type="submit" name="supprimer_table" id="supprimer_table" value="Supprimer la table si existante" /> </form> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" > <input type="submit" name="supprimer_base" id="supprimer_base" value="Supprimer la base si existante" /> </form>
Merci. :roll:

Mammouth du PHP | 19672 Messages

01 mai 2005, 18:27

Ben forcément, il y a une variable non initialisée, donc la requête qui arrive est : DROP TABLE ; c'est tout

Il faudrait envoyer le nom de la table ou de la base en paramètre à la fonction correspondante.
<?php
function suppression_table($tablename)
{
    $retour = false;
    $cmd_suppr_table="DROP TABLE `". $tablename ."`;";
    $suppr_table=mysql_query($cmd_suppr_table);
    if($suppr_table)
    {
        $retour = true;
    }
    return $retour;
}
function suppression_base($dbname)
{
    $retour = false;
    $cmd_suppr_base="DROP DATABASE `". $dbname ."`;";
    $suppr_base=mysql_query($cmd_suppr_base);
    if($suppr_base)
    {
        $retour = true;
    }
    return $retour;
}

/* Initialisation des nom de base et de table: */
$nom_base = "";
$nom_table = "";
/* --------- A compléter -------- */

if(isset($_POST['supprimer_table']))
{
    $suppression_table = suppression_table($nom_table);
    if($suppression_table == true)
    {
        echo("<p>La table a été supprimée correctement</p>\n");
    }
    else
    {
        echo("<p><span style=\"color: #ff0000; font-weight: bold\">Erreur d'exécution</span> : La table n'a pas été supprimée correctement</p>\n");
    }
}

if(isset($_POST['supprimer_base']))
{
    $suppression_base = suppression_base($nom_base);
    if($suppression_base == true)
    {
        echo("<p>La base a été supprimée correctement</p>\n");
    }
    else
    {
        echo("<p><span style=\"color: #ff0000; font-weight: bold\">Erreur d'exécution</span> : La base n'a pas été supprimée correctement</p>\n");
    }
}
?>

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" >
   <input type="submit" name="supprimer_table" id="supprimer_table" value="Supprimer la table si existante" />
</form>

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" >
   <input type="submit" name="supprimer_base" id="supprimer_base" value="Supprimer la base si existante" />
</form> 
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
fab
ViPHP | 2657 Messages

01 mai 2005, 18:34

hum
 $cmd_suppr_base="DROP DATABASE `". $dbname ."`;"; 
tu es sur de l'avant dernier ; ???
je pense plutot a :
 $cmd_suppr_base="DROP DATABASE `". $dbname ."`";

Mammouth du PHP | 19672 Messages

01 mai 2005, 18:38

hum
 $cmd_suppr_base="DROP DATABASE `". $dbname ."`;"; 
tu es sur de l'avant dernier ; ???
je pense plutot a :
 $cmd_suppr_base="DROP DATABASE `". $dbname ."`";
Avec MySQL, tu peux terminer ta requête par un ";" : si tu ne le mets pas, pas de problème, mais ce n'est pas une erreur de le mettre.

Là où je fais attention, c'est quand je construis des requêtes dynamique et là, pas de ";" n'importe où, sinon, j'aurai une requête incomplète et un bout de requête dénué de sens ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

cyberappz
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 18:42

Voilà! Nickel! :D I love you! :roll:
Le truc marrant, c'est que quand on fait supprimer la table, si la base n'existe pas, il la crée lol. Y a moyen de rajouter une vérif.?
J'ai testé en mettant "DROP TABLE IF EXISTS" mais ça ne marche pas. :(

cyberappz
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 19:02

Je viens d'essayer en faisant un SELECT sur une partie de la table et si ca renvoyait qq'chose, elle était existante et donc, on la supprimait. Mais ca ne marche pas. C'est la commande DROP qui crée la base malgré tout si elle ne trouve pas la table. ;(

cyberappz
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 19:11

Y a cor kk'un lol? :lol: :lol: :oops: :roll:

Mammouth du PHP | 19672 Messages

01 mai 2005, 19:12

Le truc que j'utilise quand j'ai des difficultés de syntaxe, je fais le truc dans PhpMyAdmin et je copie la requête:

Autre truc, exporte ta base au format SQL en cochant []ajouter drop if exists , tu verras dans le fichier comment ça fonctionne, parce qu'avec PMA ça marche très bien.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

cyberappz
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 19:21

Ouais je fais souvent ça aussi mais ici il n'y a pas DROP IF EXISTS mais seulement IF NOT EXISTS... T'as une idée?

Mammouth du PHP | 19672 Messages

01 mai 2005, 19:42

de tête non, faut que je fouille dans le manuel, ce que tu peux du reste faire aussi ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

01 mai 2005, 19:46

Tiens, ICI et ICI
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

cyberappz
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 20:07

Nop tjs pas. Je crois que c'est peut-être "mysql_select_db" qui s'il ne sait pas séléctionner la base, la créée. Qu'en penses-tu? :)